iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
自我挑戰組

Python Discord Bot(DC機器人)系列 第 6

Python Discord Bot#6 - 偵測對話的簡單方式與回覆

  • 分享至 

  • xImage
  •  

偵測對話很簡單,
也是最好重現的功能,
但也是有很多內容可以研究,
這篇主要是提一些偵測對話功能中可能會用到的情況,
為了方便大家看有哪些,
我會先把內容列表在上面後,
下面才會有圖示跟code。

偵測對話

  1. 純文字
  2. tag
  3. 文字判斷

純文字(前篇有介紹,但還是再列一次)

當文字等於指定的目標,ex: 「ping」

if message.content == 'ping':

https://ithelp.ithome.com.tw/upload/images/20230905/20106071t7YFQITjwx.png

tag

當使用tag呼叫機器人觸發

if re.findall(f"<@{client.application_id}>", message.content):

https://ithelp.ithome.com.tw/upload/images/20230905/20106071xrmtJXDDcD.png

文字判斷

當文字有部分內容為目標,ex: 「呼叫幫手、呼叫幫手 123」

if re.findall("呼叫幫手", message.content):

https://ithelp.ithome.com.tw/upload/images/20230905/20106071uk3hp2m7Cx.png

回覆目標

在前篇中回覆是直接顯示在目標訊息的文字頻道,
但回覆其實還能直接私訊玩家的方式,
切記,回覆只限 @client.event 的 on_message 方式。
1.message.channel.send 發送訊息到目標伺服器的文字頻道
2.message.reply 使用「回覆」目標訊息
3.message.author.send 發送訊息到目標成員私訊


@client.event
async def on_message(message):
  if message.author == client.user: # 排除機器人本身的訊息
    return
  if message.content == 'ping':
    await message.channel.send('pong')  # 回覆伺服器的文字頻道
    await message.reply('ha') # 使用「回覆」目標訊息
    await message.author.send("私訊給你~ pong") # 回覆伺服器成員私訊

https://ithelp.ithome.com.tw/upload/images/20230905/201060711xvA2WcuBf.png
https://ithelp.ithome.com.tw/upload/images/20230905/20106071uXNNeXBSQk.png

小實作

使用全部的方式來逹成一個小小的互動

@client.event
async def on_message(message):
  if message.author == client.user: # 排除機器人本身的訊息
    return

  # 純文字偵測「ping」
  if message.content == 'ping':
    await message.channel.send('pong')  # 發送訊息到目標伺服器的文字頻道
  # 偵測機器人被Tag
  elif re.findall(f"<@{client.application_id}>", message.content):
    await message.reply("安安 找我嗎~") # 使用「回覆」目標訊息
	# 文字判斷
  elif re.findall("呼叫幫手", message.content):
    newStr = message.content.split('呼叫幫手')
    await message.author.send("私訊給你~ 你剛剛說: "+ newStr[1]) # 發送訊息到目標成員私訊

結果:
https://ithelp.ithome.com.tw/upload/images/20230905/20106071QUlwX8nOzs.png
https://ithelp.ithome.com.tw/upload/images/20230905/201060718jLqTOjXlz.png
https://ithelp.ithome.com.tw/upload/images/20230905/20106071ldp7L8K7lf.png

範例code
TAG: it_#6


上一篇
Python Discord Bot#5 - 偵測對話功能介紹
下一篇
Python Discord Bot#7 - 偵測編輯與刪除的訊息
系列文
Python Discord Bot(DC機器人)31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
sc05201
iT邦新手 5 級 ‧ 2024-04-15 19:55:53

小實作的程式碼如果我不多個import re都會錯誤

KUI iT邦新手 4 級 ‧ 2024-08-13 17:33:49 檢舉

是的,
https://github.com/l13013312333/it_discordBot/blob/it_%236/src/discordBot.py

在範例中有使用import re ,
很抱歉文章不夠詳細也怕寫太多會太亂,
所以才直接給tag 給大家

我要留言

立即登入留言